package com.atguigu.jxc.dao;

import com.atguigu.jxc.entity.Goods;
import com.atguigu.jxc.entity.GoodsType;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @description 商品信息
 */
public interface GoodsDao {


    String getMaxCode();


    List<Goods> listInventory(@Param("offSet") int offSet, @Param("rows") Integer rows, @Param("codeOrName") String codeOrName, @Param("goodsTypeId") Integer goodsTypeId);

    //查询销售总量
    Integer marketNum(@Param("goodsId") Integer goodsId);

    Integer returnNum(@Param("goodsId") Integer goodsId);

    String goodsTypeName(@Param("goodsTypeId") Integer goodsTypeId);

    //查询商品的信息
    List<Goods> goodsList(@Param("getCount") Integer getCount, @Param("rows") Integer rows, @Param("goodsName") String goodsName, @Param("goodsTypeId") Integer goodsTypeId);

    //新增
    void save(Goods goods);

    void update(Goods goods);

    String getState(String goodsId);



    List<Goods> selectNoInventory(@Param("getCount") int getCount, @Param("rows") Integer rows, @Param("nameOrCode") String nameOrCode);

    List<Goods> getHasInventoryQuantity(@Param("getCount") int getCount, @Param("rows") Integer rows, @Param("nameOrCode") String nameOrCode);

    void saveUpdateStock(@Param("goodsId") Integer goodsId,
                         @Param("inventoryQuantity") Integer inventoryQuantity,
                         @Param("purchasingPrice") double purchasingPrice);

    /**
     * 获取商品的 state
     * @param goodsId
     * @return
     */
    Integer getStateByGoodsId(Integer goodsId);

    void delete(String goodsId);

    List<Goods> listAlarms();

    GoodsType goodsTypeId(Integer goodsTypeId);

    List<GoodsType> goodTypePid(Integer goodsTypeId);
}
